package sismed.dados.hibernate.dao;


import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;



import sismed.dao.IDAOReceitaMedica;
import sismed.hibernate.util.HibernateUtil;
import sismed.negocio.modelo.ReceitaMedica;


public class DAOHibernateReceita implements IDAOReceitaMedica
{
	private Session sessaoHibernate;
	
	public DAOHibernateReceita()
	{
		super();		
		sessaoHibernate = HibernateUtil.getSession();
	}

	public boolean cadastrar(ReceitaMedica receitaMedica) 
	{
		Transaction t = sessaoHibernate.beginTransaction();
		
		try
		{
			sessaoHibernate.merge(receitaMedica);
			t.commit();			
		}
		catch (Exception e) 
		{
			t.rollback();
		}
		finally
		{
			sessaoHibernate.close();
		}
		
		return true;
	}

	public ReceitaMedica getReceitaMedica(int idReceitaMedica) 
	{		
		return (ReceitaMedica)sessaoHibernate.load(ReceitaMedica.class, idReceitaMedica);
	}

	public List<ReceitaMedica> recuperarLista(String idpaciente) 
	{
		Query query = sessaoHibernate.createQuery("from ReceitaMedica where id='"+idpaciente+"'");
				
		return query.list();
	}

	public List<ReceitaMedica> recuperarLista() 
	{
		
		return sessaoHibernate.createCriteria(ReceitaMedica.class).list();
	}

	public List<ReceitaMedica> recuperarListaPorMedico(String idMedico) 
	{
		int id = Integer.parseInt(idMedico);
		Query query = sessaoHibernate.createQuery("from ReceitaMedica as med where med.medico.id='"+id+"'");
	
		return query.list();
	}

	public List<ReceitaMedica> recuperarListaPorPaciente(String idPaciente) 
	{
		
		Query query = sessaoHibernate.createQuery("from ReceitaMedica as med where med.paciente.id='"+Integer.parseInt(idPaciente)+"'");
		
		return query.list();
	}

}
